There exist reporting tools that generate reports from underlying data sources. Typically, these reporting tools have mechanisms to render the report result in visually accessible formats (such as HTML and PDF). To access the report results programmatically, these reporting tools have mechanisms to obtain the results of rendering of a report in the form of a homogenous set of rows with many columns in some format, e.g., Comma-Separated Values or XML. Those rows need to be parsed to understand the context and meaning of each individual cell in the unstructured table of data. Each column has specific meaning and is position dependent. Important information about the data like group breaks often needs to be detected by parsing the data and maintaining state information from row to row.
Such parsing needs extensive programming and is prone to errors. It is also fragile and can easily be broken, for example, by common report maintenance activities, such as adding new data columns to the report.
As well, these programmatically accessible “tabular data” formats only capture the raw data values, and do not capturing the presentation properties (e.g., layout and formatting) of the report, that represent a large part of the Business Intelligence report rendering application's value.
Conversely, formats such as HTML and PDF are commonly generated from these reporting tools, formats of which do capture this presentation information. However, these formats are not structured in a format which allows the output to be used in other contexts programmatically (without the previously mentioned complexity and fragility).
It is therefore desirable to provide a mechanism that can provide programmatic access to report results with presentation properties without requiring such complex parsing.